package com.excilys.capicsoubank.dao;

/**
 * Interface mère des EntitesDao.
 * 
 * @author Guillaume Lenoir
 * 
 * @param <T>
 *            paramètre User ou Account
 */
public interface GenericDao<T> {

	/**
	 * Persiste l'instance entity.
	 * 
	 * @param entity
	 *            entité à persister
	 */
	void saveEntity(T entity);

	/**
	 * Supprime l'instance entity.
	 * 
	 * @param entity
	 *            entité à supprimer
	 */
	void deleteEntity(T entity);

	/**
	 * Update l'instance entity.
	 * 
	 * @param entity
	 *            entité à mettre à jour
	 */
	void updateEntity(T entity);

	/**
	 * Récupère une instance de type T dont l'Id vaut entityId.
	 * 
	 * @param entityId
	 *            Id de l'entité à récupérer
	 * @return T Type de l'entité à récupérer
	 * 
	 */
	T getById(int entityId);
}
